﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AgileSaude.Entities;
using AgileSaude.Business;
using FBS.Framework;

namespace AgileSaude.Web.Admin
{
    public partial class ClinicaEdit : PageBase
    {
        #region Properties
        public int IdMedico
        {
            get { return ViewState["IdMedico"] == null ? int.MinValue : Convert.ToInt32(ViewState["IdMedico"]); }
            set { ViewState["IdMedico"] = value; }
        }

        public MedicoEntities Medico
        {
            get { return (MedicoEntities)ViewState["Medico"]; }
            set { ViewState["Medico"] = value; }
        }

        MedicoFacade MedicoFacade = new MedicoFacade();

        public List<MedicoEntities> ListaMedico
        {
            get { return ViewState["ListaMedico"] == null ? new List<MedicoEntities>() : (List<MedicoEntities>)ViewState["ListaMedico"]; }
            set { ViewState["ListaMedico"] = value; }
        }

        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                Resultado resultado = new Resultado();

                CidadeEntities FiltroCidade = new CidadeEntities();

                ddlCidade.DataTextField = "Nome";
                ddlCidade.DataValueField = "IdCidade";

                ddlCidade.DataSource = new CidadeFacade().Listar(FiltroCidade, ref resultado).OrderBy(x => x.Nome);
                ddlCidade.DataBind();

                //EspecialidadeEntities FiltroEspecialidade = new EspecialidadeEntities();

                //ddlEspecialidade.DataTextField = "Descricao";
                //ddlEspecialidade.DataValueField = "IdEspecialidade";

                //ddlEspecialidade.DataSource = new EspecialidadeFacade().Listar(FiltroEspecialidade, ref resultado).OrderBy(x => x.Descricao);
                //ddlEspecialidade.DataBind();

                if (Context.Handler is ListaClinicas)
                {
                    int IdMedico = ((ListaClinicas)Context.Handler).IdMedico;

                    if (IdMedico > 0)
                    {
                        Medico = MedicoFacade.GetMedico(IdMedico);

                        if (Medico != null)
                        {
                            hdfIdMedico.Value = Medico.idMedico.ToString();
                            txtNome.Text = Medico.Nome;
                            txtEmail.Text = Medico.Email;
                            txtEndereco.Text = Medico.Endereco;
                            txtBairro.Text = Medico.Bairro;
                            ddlCidade.SelectedValue = Medico.idCidade.ToString();
                            //ddlEspecialidade.SelectedValue = Medico.idEspecialidade.ToString();
                            txtCEP.Text = Medico.CEP;
                            txtTel1.Text = Medico.Telefone1;
                            txtTel2.Text = Medico.Telefone2;
                        }
                    }

                    if (((ListaClinicas)Context.Handler).ReadOnly)
                        btnSalvar.Visible = false;
                }
            }
        }

        protected void btnVoltar_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Admin/ListaClinicas.aspx", false);
        }

        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            Resultado resultado = new Resultado();
            string msgConfirmacao = string.Empty;

            if (Page.IsValid)
            {
                try
                {
                    if (Medico == null || Medico.idMedico == 0)
                    {
                        Medico = new MedicoEntities();
                        Medico.DataInclusao = DateTime.Now;
                    }

                    Medico.Nome = txtNome.Text;
                    Medico.Email = txtEmail.Text;
                    Medico.Endereco = txtEndereco.Text;
                    Medico.Bairro = txtBairro.Text;
                    Medico.idCidade = int.Parse(ddlCidade.SelectedValue);

                    //Medico.idEspecialidade = int.Parse(ddlEspecialidade.SelectedValue);
                    Resultado result = new Resultado();
                    EspecialidadeEntities FiltroEspecialidade = new EspecialidadeEntities();
                    Medico.idEspecialidade = new EspecialidadeFacade().Listar(FiltroEspecialidade, ref result).FirstOrDefault().idespecialidade;

                    Medico.CEP = txtCEP.Text;
                    Medico.Ativo = true;
                    Medico.BreveCV = "";
                    Medico.Clinica = true;
                    Medico.Telefone1 = txtTel1.Text;
                    Medico.Telefone2 = txtTel2.Text;

                    if (Medico.idMedico > 0)
                    {
                        //Alterar
                        resultado = MedicoFacade.Alterar(Medico, "");
                    }
                    else
                    {
                        //Incluir
                        resultado = MedicoFacade.Incluir(Medico, "");
                    }

                }
                catch (Exception ex)
                {
                    new ResultadoFacade().GravaLog(ref resultado, ex.Message, "AgileSaude", "", "btnSalvar_Click", "ClinicaEdit.aspx");
                }

                if (resultado.Sucesso)
                {
                    Response.Redirect("~/Admin/ListaClinicas.aspx", false);
                }
                else
                {
                    ((Label)Master.FindControl("lblMensagem")).Text = resultado.Mensagens[0].Descricoes[0];
                    ((Label)Master.FindControl("lblMensagem")).CssClass = "failureNotification";
                    ((Label)Master.FindControl("lblMensagem")).Visible = true;
                }
            }

        }
    }
}